package com.哈希表;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 给定一个非空的整数数组，返回其中出现频率前 k 高的元素。
 *
 *
 *
 * 示例 1:
 *
 * 输入: nums = [1,1,1,2,2,3], k = 2
 * 输出: [1,2]
 */
public class 前K个高频元素 {
    static public int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> map  = new HashMap<>();
        for(int i = 0;i<nums.length;i++){
            map.put(nums[i],map.getOrDefault(nums[i],0)+1);

        }
        List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());
        list.sort((x1,x2)->{
            return x2.getValue()-x1.getValue();
        });
        int[] x = new int[k];
        for(int i = 0 ;i<k;i++){
            x[i] = list.get(i).getKey();
        }
        return x;
}

    public static void main(String[] args) {
        topKFrequent(new int[]{1,2},2);
    }
}
